1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package com.google.common.collect.testing.google;
16
17 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ITERATOR_REMOVE;
18 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
19 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEYS;
20 import static com.google.common.collect.testing.features.MapFeature.ALLOWS_NULL_KEY_QUERIES;
21 import static com.google.common.collect.testing.features.MapFeature.SUPPORTS_REMOVE;
22
23 import com.google.common.annotations.GwtCompatible;
24 import com.google.common.collect.Multimap;
25 import com.google.common.collect.testing.features.CollectionFeature;
26 import com.google.common.collect.testing.features.CollectionSize;
27 import com.google.common.collect.testing.features.MapFeature;
28
29 import java.util.Iterator;
30 import java.util.Map;
31
32
33
34
35
36
37 @GwtCompatible
38 public class MultimapKeySetTester<K, V> extends AbstractMultimapTester<K, V, Multimap<K, V>> {
39 public void testKeySet() {
40 for (Map.Entry<K, V> entry : getSampleElements()) {
41 assertTrue(multimap().keySet().contains(entry.getKey()));
42 }
43 }
44
45 @CollectionSize.Require(absent = ZERO)
46 @MapFeature.Require(ALLOWS_NULL_KEYS)
47 public void testKeySetContainsNullKeyPresent() {
48 initMultimapWithNullKey();
49 assertTrue(multimap().keySet().contains(null));
50 }
51
52 @MapFeature.Require(ALLOWS_NULL_KEY_QUERIES)
53 public void testKeySetContainsNullKeyAbsent() {
54 assertFalse(multimap().keySet().contains(null));
55 }
56
57 @MapFeature.Require(SUPPORTS_REMOVE)
58 public void testKeySetRemovePropagatesToMultimap() {
59 int key0Count = multimap().get(sampleKeys().e0).size();
60 assertEquals(key0Count > 0, multimap().keySet().remove(sampleKeys().e0));
61 assertEquals(getNumElements() - key0Count, multimap().size());
62 assertGet(sampleKeys().e0);
63 }
64
65 @CollectionSize.Require(absent = ZERO)
66 @CollectionFeature.Require(SUPPORTS_ITERATOR_REMOVE)
67 public void testKeySetIteratorRemove() {
68 int key0Count = multimap().get(sampleKeys().e0).size();
69 Iterator<K> keyItr = multimap().keySet().iterator();
70 while (keyItr.hasNext()) {
71 if (keyItr.next().equals(sampleKeys().e0)) {
72 keyItr.remove();
73 }
74 }
75 assertEquals(getNumElements() - key0Count, multimap().size());
76 assertGet(sampleKeys().e0);
77 }
78 }